/**********************************
 * @Author: Your Name
 * @LastEditTime: 2025-11-08
 * Copyright © 2025 Your Name
 **********************************/

/**
 * 主题管理组合式函数
 * 基于项目的 UnoCSS 和 Naive UI 主题系统
 */

import { useAppStore } from '@/store'
import { themePresets } from '@/utils/themeUtils'

/**
 * 使用主题管理的组合式函数
 * @returns {Object} 主题相关的响应式方法和样式
 */
export function useTheme() {
  const appStore = useAppStore()
  
  /**
   * 获取主题相关的样式类
   * @param {string} type - 样式类型 ('card', 'search', 'buttonGroup', 'treeContainer', 'formItem')
   * @param {Object} customOptions - 自定义选项
   * @returns {Object} 响应式的样式对象
   */
  const getThemeClasses = (type, customOptions = {}) => {
    const preset = themePresets[type] || {}
    const mergedOptions = { ...preset, ...customOptions }
    
    return computed(() => {
      const classes = []
      
      // 背景
      if (mergedOptions.background) {
        classes.push(mergedOptions.background)
      }
      
      // 边框
      if (mergedOptions.border) {
        classes.push(mergedOptions.border)
      }
      
      // 圆角
      if (mergedOptions.radius) {
        classes.push(mergedOptions.radius)
      }
      
      // 内边距
      if (mergedOptions.padding) {
        classes.push(mergedOptions.padding)
      }
      
      return {
        containerClasses: classes.join(' '),
        isDark: appStore.isDark
      }
    })
  }
  
  /**
   * 获取深色模式下的样式类
   * @param {string} lightClass - 浅色模式样式
   * @param {string} darkClass - 深色模式样式
   * @returns {Object} 响应式的样式对象
   */
  const getThemeClass = (lightClass, darkClass) => {
    return computed(() => {
      return appStore.isDark ? darkClass : lightClass
    })
  }
  
  /**
   * 获取背景样式类（自动主题适配）
   * @param {string} lightBg - 浅色背景
   * @param {string} darkBg - 深色背景
   * @returns {string} 背景样式类
   */
  const getBgClass = (lightBg = 'bg-white', darkBg = 'bg-dark') => {
    return computed(() => {
      return appStore.isDark ? darkBg : lightBg
    })
  }
  
  /**
   * 获取文字颜色样式类（自动主题适配）
   * @param {string} lightColor - 浅色文字
   * @param {string} darkColor - 深色文字
   * @returns {string} 文字颜色样式类
   */
  const getTextClass = (lightColor = 'text-gray-900', darkColor = 'text-gray-100') => {
    return computed(() => {
      return appStore.isDark ? darkColor : lightColor
    })
  }
  
  /**
   * 获取边框样式类（自动主题适配）
   * @param {string} lightBorder - 浅色边框
   * @param {string} darkBorder - 深色边框
   * @returns {string} 边框样式类
   */
  const getBorderClass = (lightBorder = 'border-gray-200', darkBorder = 'border-gray-700') => {
    return computed(() => {
      return appStore.isDark ? darkBorder : lightBorder
    })
  }
  
  return {
    // 主要方法
    getThemeClasses,
    getThemeClass,
    getBgClass,
    getTextClass,
    getBorderClass,
    
    // 直接访问 store
    isDark: computed(() => appStore.isDark),
    primaryColor: computed(() => appStore.primaryColor),
    
    // 预定义的样式组合
    themePresets,
    
    // 便捷方法
    // 获取卡片样式
    getCardClasses: (options = {}) => getThemeClasses('card', options),
    // 获取搜索容器样式
    getSearchClasses: (options = {}) => getThemeClasses('search', options),
    // 获取树形容器样式
    getTreeClasses: (options = {}) => getThemeClasses('treeContainer', options),
    // 获取表单样式
    getFormClasses: (options = {}) => getThemeClasses('formItem', options)
  }
}